package com.markhsiu.mysql.packet.server;

import com.markhsiu.mysql.packet.MySQLMessage;
import com.markhsiu.mysql.packet.MysqlPacket;
import com.markhsiu.mysql.packet.PacketReadable;

/**
 * 查询结果的响应的列信息处理
 * 
 * n 	目录名称（Length Coded String）
 * n 	数据库名称（Length Coded String）
 * n 	数据表名称（Length Coded String）
 * n 	数据表原始名称（Length Coded String）
 * n 	列（字段）名称（Length Coded String）
 * 4 	列（字段）原始名称（Length Coded String）
 * 1 	填充值
 * 2 	字符编码
 * 4 	列（字段）长度
 * 1 	列（字段）类型
 * 2 	列（字段）标志
 * 1 	整型值精度
 * 2 	填充值（0x00）
 * n 	默认值（Length Coded String）
 */
public class FieldPacket extends MysqlPacket  implements PacketReadable{

	/**
	 * 目录名称：在4.1及之后的版本中，该字段值为"def"。
	 */
	private byte[] dirName;

	/**
	 * 数据库名称（Length Coded String）数据库名称：数据库名称标识。
	 */
	private byte[] dataBaseName;

	/**
	 * 数据表名称：数据表的别名（AS之后的名称）。
	 */
	private byte[] tableAsName;

	/**
	 * 数据表原始名称：数据表的原始名称（AS之前的名称）。
	 */
	private byte[] tableBeforeName;

	/**
	 * 列（字段）名称：列（字段）的别名（AS之后的名称）。
	 */
	private byte[] columnAsName;

	/**
	 * 列（字段）原始名称：列（字段）的原始名称（AS之前的名称）。
	 * 
	 */
	private byte[] columnBeforeName;

	/**
	 * 字符编码：列（字段）的字符编码值。
	 */
	private int charSet;

	/**
	 * 列（字段）长度：列（字段）的长度值，真实长度可能小于该值，例如VARCHAR(2)类型的字段实际只能存储1个字符。
	 */
	private long columnLength;

	/**
	 * 列（字段）类型：列（字段）的类型值，取值范围如下（参考源代码/include/mysql_com.
	 * h头文件中的enum_field_type枚举类型定义）：
	 */
	private int columnType;

	/**
	 * 列（字段）标志：各标志位定义如下（参考源代码/include/mysql_com.h头文件中的宏定义）：
	 */
	private int columnFlag;

	/**
	 * 数值精度：该字段对DECIMAL和NUMERIC类型的数值字段有效，用于标识数值的精度（小数点位置）。
	 */
	private byte decimalNum;

	/**
	 * 默认值：该字段用在数据表定义中，普通的查询结果中不会出现。
	 */
	private byte[] defValue;
	
	@Override
	public void read(MySQLMessage message) {
		// TODO Auto-generated method stub
		
	}
 

	@Override
	public String descrption() {
		// TODO Auto-generated method stub
		return null;
	}
}
